<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>125_包装类</title>
		<script>
			/* 
			在JS中，除了直接创建原始值外，也可以创建原始值的对象I
				通过 new String() 可以创建String类型的对象;
				通过 new Number()可以创建Number类型的对象;
				通过 new Boolean()可以创建Boolean类型的对象;
				但是千万不要通过上面方式创建对象；
				
				包装类:
				JS中一共有5个包装类
					String --> 字符串包装为String对象
					Number -->数值包装为Number对象
					Boolean --> 布尔值包装为Boolean对象
					BigInt -->大整数包装为BigInt对象
					Symbol --> 符号包装为Symbol对象
						- 通过包装类可以将一个原始值包装为一个对象，
							当我们对一个原始值调用方法或属性时，JS解释器会临时将原始值包装为对应的对象
							然后调用这个对象的属性或方法
					
				由于原始值会被临时转换为对应的对象，这就意味着对象中的方法都可以直接通过原始值来调用。
				
				
			 */
			let str = new String("hello")
			let num = new Number(11)
			let bool = new Boolean(true)
			cqnsole.log(str)
			console.log(typeof str)

			let str = "hello";
			str.name = "哈哈" //对string调用name属性，会自动将String包装为对应的对象
			//读取是时会再次包装，但这次与上面一次包装的不是同一个对象，所以读取的是undefined

			let num = 11;
			//会临时转为Number对象，Number中有toString方法，所以不会报错。
			num = num.toString()

			console.log(str.name);
		</script>
	</head>
	<body>
	</body>
</html>